package controller

import (
	"SE/Response"
	"github.com/gin-gonic/gin"
	"github.com/mojocn/base64Captcha"
	"go.uber.org/zap"
)

// base64Captcha  缓存对象
var store = base64Captcha.DefaultMemStore

// GetCaptcha 获取验证码
func GetCaptcha(ctx *gin.Context) {
	// 创建一个数字验证码的驱动器
	// 该驱动器定义了验证码的视觉属性和行为
	driver := base64Captcha.NewDriverDigit(80, 240, 5, 0.7, 80)

	// 使用指定的驱动器和存储方式创建一个新的Captcha实例
	// 这个实例用于生成和验证验证码
	cp := base64Captcha.NewCaptcha(driver, store)
	// b64s是图片的base64编码

	// Generate 方法用于生成一个新的验证码。
	// 该方法会根据驱动器的配置生成验证码图片或音频，并将其存储在指定的存储中。
	// 返回值通常包括验证码的 ID 和生成的验证码数据（如 Base64 编码的图片字符串）
	id, b64s, _, err := cp.Generate()
	if err != nil {
		zap.S().Errorf("生成验证码错误,:%s ", err.Error())
		Response.Err(ctx, 500, "生成验证码错误", "")
		return
	}
	Response.Success(ctx, 200, "生成验证码成功", gin.H{
		"captchaId": id,
		"picPath":   b64s,
	})
}
